https://cryptohack.org/courses/intro/xorkey1/
今天這題比較難,要自己找出密鑰。
flag的格式
from pwn import xor
key = b'' # 將 key 初始化為空的字節串
k = bytes.fromhex('0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104')
target = 'crypto{'
# 尋找密鑰的每個字節
for i in range(len(target)):
for j in range(256):
if k[i] ^ j == ord(target[i]): # 依序比較 XOR 解密後的結果與目標字符
key += bytes([j]) # 將找到的字節追加到 key
break
print(key) # 輸出找到的密鑰字節串
b'myXORke'
推測密鑰為myXORkey,使用這個密鑰與密文進行xor運算
print(xor(k, b'myXORkey')) # 使用找到的密鑰進行 XOR 解密並輸出結果
b'crypto{1f_y0u_Kn0w_En0uGH_y0u_Kn0w_1t_4ll}'
from pwn import xor
# k ^ t = 'crypto'
# k ^ t ^ t = 'crypto' ^ t = k
# 解密密文前7個字節來找出部分密鑰(k)
t=bytes.fromhex('0e0b213f26041e480b26217f27342e175d0e070a3c5b103e2526217f27342e175d0e077e263451150104')
t1 = t[:7] # 取出密文的前7個字節,這部分應該對應 'crypto{'
k = xor(t1, 'crypto{').decode() # 將前7個字節與 'crypto{' 進行 XOR,推導出密鑰的前7個字符
print(k) # 輸出解出的密鑰前7個字符
myXORke
推測密鑰為myXORkey,使用這個密鑰與密文進行xor運算
# 使用完整密鑰解密整個密文
print((xor('myXORkey', t)).decode()) # 將整個密文與推導出的密鑰進行 XOR 解密並輸出結果
crypto{1f_y0u_Kn0w_En0uGH_y0u_Kn0w_1t_4ll}
今天解了Intro的最後一題。明天要進入新篇章了~